package inter.dao;

import inter.entidade.Cliente;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import conexao.banco.CriaConexao;

public class ClienteDao {
	private Connection conexao;

    public ClienteDao() throws SQLException {
        this.conexao = CriaConexao.getConexao();

    }
             // Metodo de inserção em banco de dados mysql
    public void adicionar(Cliente c1) throws SQLException {
        String sql = "INSERT  INTO cadastroCliente("
                + "nome,"
                + "endereco,"
                + "cpf,"
                + "rg,"
                + "cidade,"
                + "cep,"
                + "compEnd,"
                + "estCivil,"
                + "estadoCidade,"
                + "bairro) values(?,?,?,?,?,?,?,?,?,?)";
       
        PreparedStatement stmt = conexao.prepareStatement(sql);

        stmt.setString (1, c1.getNome());
        stmt.setString(2, c1.getEndereco().getRua());
        stmt.setInt   (3, c1.getCpf());
        stmt.setInt   (4, c1.getRg());
        stmt.setString(5, c1.getCidadePessoa());
        stmt.setInt   (6, c1.getCepPessoa());
        stmt.setString(7, c1.getCompEnderecoPessoa());
        stmt.setString(8, c1.getEstCivilPessoa());
        stmt.setString(9, c1.getEstadoCidPessoa());
        stmt.setString(10,c1.getBairroPessoa());
        stmt.executeUpdate();
        stmt.close();

    }

    public void excluir(Cliente c1) throws SQLException {
        
        String sql = "delete from cadastroCliente where id=?";
        
        PreparedStatement stmt = this.conexao.prepareStatement(sql);
        stmt.setInt(1, c1.getIdCliente()t);
        
        stmt.execute();
        stmt.close();
    }

    public void alterar(Cliente c1) throws SQLException {
        String sql = "UPDATE cadastroCliente SET "
                + "nome=?,"
                + "endereco=?,"
                + "cpf=?,"
                + "rg =?,"
                + "cidade=?,"
                + "cep=?,"
                + "compEnd=?,"  
                + "estCivil=?,"
                + "estadoCidade=?,"
                + "bairro=?"
                +"WHERE id=?";
        
        PreparedStatement stmt = conexao.prepareStatement(sql);
        
                  // setar valores
           
        stmt.setString(1, c1.getNomePessoa());
        stmt.setString(2, c1.getEnderecoPessoa());     
        stmt.setLong  (3, c1.getCpfPessoa());
        stmt.setInt   (4, c1.getRgPessoa());
        stmt.setString(5, c1.getCidadePessoa());
        stmt.setInt   (6, c1.getCepPessoa());
        stmt.setString(7, c1.getCompEnderecoPessoa()); 
        stmt.setString(8, c1.getEstCivilPessoa());      
        stmt.setString(9, c1.getEstadoCidPessoa());
        stmt.setString(10,c1.getBairroPessoa());
        stmt.setInt(11, c1.getCodPessoa());
        
        
        stmt.executeUpdate();
        stmt.close();

    }

    
    
    
    
    public List<Cliente> getLista(String nome) throws SQLException{
        
    String sql = "select * from cadastroCliente where nome like ? ORDER BY nome ASC";
    PreparedStatement stmt = this.conexao.prepareStatement(sql);
    stmt.setString(1, nome);
    ResultSet rs = stmt.executeQuery();
    
    List <Cliente> listaClientes = new ArrayList<Cliente>();
    
    while (rs.next()){
     
        Cliente c1 = new Cliente();
                c1.setCodPessoa(Integer.valueOf(rs.getString("id")));
                c1.setNomePessoa(rs.getString("nome"));
                c1.setEnderecoPessoa(rs.getString("endereco"));
                c1.setCpfPessoa(rs.getLong("cpf"));
                c1.setRgPessoa(rs.getInt("rg"));
                c1.setCidadePessoa(rs.getString("cidade"));
                c1.setCepPessoa(rs.getInt("cep"));
                c1.setCompEnderecoPessoa(rs.getString("compEnd"));
                c1.setEstCivilPessoa(rs.getString("estCivil"));
                c1.setEstadoCidPessoa(rs.getString("estadoCidade"));
                c1.setBairroPessoa(rs.getString("bairro"));
                 
        listaClientes.add(c1);
    }    
    rs.close();
    stmt.close();
    
    return listaClientes;
	
	
    }
}
